import { initInject, getStaticInjectData } from './injectFactory/initInject';
import { ObjectOnlyPushSet } from '../global/global';
let injectFacObj = getStaticInjectData();

/**
 * 注射器工厂
 * -
 * 为防止 注入的函数 有相关破坏的功能 可以进行 复原 操作后的 全部属性内容 并移除 本次 注入函数
 * @param {String} channel 进入 或 新生成 一个频道
 * @return {Object} 返回一个对象包含 这几个属性 : {
 *  currentChannel,
 *  exposeProp,
 *  exposedProp,
 *  inject,
 *  injected: runInjectedFunc,
 *  getstatus,
 * }
 *
 *
 * exposeProp : 向外暴露 prop;
 *
 *
 * exposedProp : 暴露 的 prop；
 *
 *
 * inject : 注入函数;
 *
 *
 * injected : 注入 的 函数;
 *
 *
 * getstatus : 获取注入函数的 的状态
 */
function injectFactory(channel) {
  if (channel == undefined) {
    return injectFacObj;
  }
  //   currentChannel = channel;
  //   console.log(channel);
  ObjectOnlyPushSet(injectFacObj, channel, initInject(channel));
  //   console.log(injectFacObj['data']);
  injectFacObj[channel]['people'] =
    injectFacObj[channel]['people'] == undefined
      ? 1
      : injectFacObj[channel]['people'] + 1;

  return injectFacObj[channel];
}
// class a {
//     /**
//      * 能使用注释
//      */
//      b(){
//         console.log("is b func")
//     }
//     /**
//      * 能使用注释
//      */
//     c(){
//         console.log("is c func can use without Function declear")
//     }
//     /**
//      * 能使用注释 ==return {/**d *}
//      */
//     d=()=>{
//         console.log("declear by empty Arrow function");
//     }
// }

export { injectFactory };
